package cn.itsource.wrapperclass;

/**
 *	自动装箱：将基本类型转换为其对应的包装类。
 *	自动拆箱：将包装类转换为基本类型。注意：这里可以是高于int的任何类型
 *
 *	享元模式：
 *			Byte、Short、Integer、Long类型当创建对象的时候，范围在 -128~127之间的时候，并不会在堆中创建对象
 *	而是直接从静态区中获取缓存的对象，所以，所有在此范围内的相同类型的包装类对象地址都是相同的。
 */
public class WrapperClass2 {

	public static void main(String[] args) {
		Integer integer2 = new Integer(1);//不是自动装箱
		Integer integer = 1222;//自动装箱，将基本类型转换为其对应的包装类。
		System.out.println(integer);
		
		long i = integer;//自动拆箱，将包装类转换为基本类型。注意：这里可以是高于int的任何类型
		System.out.println(i);
		
		
		Integer integer3 = new Integer(127);
		Integer integer4 = new Integer(127);
		
		System.out.println(integer3 == integer4);//比较两个是不是同一个对象，即地址是不是一样	false
		System.out.println(integer3.equals(integer4));//比较两个对象的值是不是一样
		
		Integer integer5 = 127;//在127~-128之间的时候，如果通过自动装箱，给包装类 赋值，则不会创建新对象，因为用了享元模式
		Integer integer6 = 127;
		System.out.println(integer5 == integer6);//比较两个是不是同一个对象，即地址是不是一样	true
		System.out.println(integer5.equals(integer6));//比较两个对象的值是不是一样
		
	}

}
